package main

import "fmt"

func main() {
	/*
		1.程序运行期间如果发生了 panic，我们可以通过 recover 将程序恢复回来，然后继续向后执行
		2.panic() 的参数位置不能为空，否则，会产生错误
		3.recover()必须搭配 defer 使用
		4.defer 一定要在可能引发 panic 的语句之前定义
	*/
	defer func() {
		if err := recover(); err != nil {
			fmt.Println(err)
		}
	}()
	fmt.Println("hello world")
	panic("unreachable") //如果 panic 中什么参数也没有的话，会invalid operation: not enough arguments for panic() (expected 1, found 0)
	/*
		hello world
		unreachable
	*/
}
